package 面向对象中级.房屋出租系统;

import static 面向对象中级.房屋出租系统.Utility.*;

    public class HouseService {
        int count = 0;       //记录房间数组未存储的第一个位置
        House[] houses = new House[10];

        // 查找房屋
        public  boolean findHouse() {
            if (count == 0){
                System.out.println("未添加房间，不能进行查找！！！");
                return false;
            }
            System.out.println("请输入要查找的房屋编号: ");
            int a = readInt();
            // 查找的房间不存在
            if(a <= 0 || a > count){
                System.out.println("输入的编号有误或该房间不存在！！！");
                return false;
            }else{
                System.out.println("---------------------查找房屋---------------------");
                System.out.println(houses[a-1].toString());
                return true;
            }
        }
        // 更该信息
        public boolean changeHouse(){
            if (count == 0){
                System.out.println("未添加房间，不能进行删除！！！");
                return false;
            }
            System.out.println("请输入要修改的房屋编号: ");
            int a = readInt();
            // 修改的房间不存在
            if(a <= 0 || a > count){
                System.out.println("输入的编号有误或该房间不存在！！！");
                return false;
            }else {
                System.out.println("---------------------修改房屋---------------------");
                // 修改房主名字(1~4)位，不能为空
                System.out.print("姓名: ");
                houses[a-1].setName(readKeyBoard(4,false));
                // 修改房主的电话号码，小于等于11位
                System.out.print("电话: ");
                houses[a-1].setPhoneNumber(readKeyBoard(11,false));
                // 修改房子的地址(1~4)位，不能为空
                System.out.print("地址: ");
                houses[a-1].setAddress(readKeyBoard(4,false));
                // 修改房屋的月租
                System.out.print("月租: ");
                houses[a-1].setMoney(readInt(3000));
                // 修改房屋的状态
                System.out.print("状态(Y:未出租  N:已出租): ");
                char b = readConfirmSelection();
                if (b == 'Y') {
                    houses[a-1].setState(false);
                } else {
                    houses[a-1].setState(true);
                }
                System.out.println("修改成功！！！");
                return true;
            }
        }

        // 删除房屋
        public boolean deleteHouse(){
            if (count == 0){
                System.out.println("未添加房间，不能进行删除！！！");
                return false;
            }
            System.out.println("---------------------删除房屋---------------------");
            System.out.println("请输入要删除的房屋编号(-1退出): ");
            int a = readInt();
            if(a == -1){
                System.out.println("---------------------退出删除---------------------");
                return false;
            }
            // 删除的房间不存在
            if(a <= 0 || a > count){
                System.out.println("输入的编号有误或该房间不存在！！！");
                System.out.println("---------------------删除失败---------------------");
                return false;
            }else {
                System.out.println("请确认是否删除(Y/N)请小心选择:");
                char c = readConfirmSelection();
                if(c == 'Y'){
                    // 删除该编号的房间
                    for(int i = a; i < count ; i++){
                        houses[i-1] = houses[i];
                    }
                    count--;
                    System.out.println("---------------------删除成功---------------------");
                    return true;
                }else {
                    System.out.println("---------------------删除失败---------------------");
                    return false;
                }
            }
        }

        // 添加房屋
        public boolean addHouse(){
            if(count > 10){
                System.out.println("房源已满，不能在添加数据！！！");
                return false;
            }
            System.out.println("---------------------添加房屋---------------------");
            houses[count] = new House();
            // 读取房主名字(1~4)位，不能为空
            System.out.print("姓名: ");
            houses[count].setName(readKeyBoard(4,false));
            // 读取房主的电话号码，小于等于11位
            System.out.print("电话: ");
            houses[count].setPhoneNumber(readKeyBoard(11,false));
            // 读取房子的地址(1~4)位，不能为空
            System.out.print("地址: ");
            houses[count].setAddress(readKeyBoard(4,false));
            // 读取房屋的月租，默认为3000
            System.out.print("月租: ");
            houses[count].setMoney(readInt(3000));
            // 读取房屋的状态
            System.out.print("状态(Y:未出租  N:已出租): ");
            char a = readConfirmSelection();
            if (a == 'Y') {
                houses[count].setState(false);
            } else {
                houses[count].setState(true);
            }
            System.out.println("---------------------添加完成---------------------");
            count++;
            return true;
        }

        // 展示所有房子信息
        public void listHouse(){
            System.out.println("---------------------房屋列表---------------------");
            System.out.println("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(未出租/已出租)");
            for (int i = 0; i < count; i++){
                System.out.print((i+1) + "\t\t");
                System.out.println(houses[i].toString());
            }
            System.out.println("---------------------房屋列表完成---------------------");

        }
    }
